{{cookiecutter.component_id}}/log/log.go (155 lines of code) (raw):
package log
import (
"os"
"github.com/sirupsen/logrus"
{% if cookiecutter.use_viper_config == "y" %}"github.com/{{cookiecutter.github_username}}/{{cookiecutter.component_id}}/config"{% endif %}
)
// Logger defines a set of methods for writing application logs. Derived from and
// inspired by logrus.Entry.
type Logger interface {
Debug(args ...interface{})
Debugf(format string, args ...interface{})
Debugln(args ...interface{})
Error(args ...interface{})
Errorf(format string, args ...interface{})
Errorln(args ...interface{})
Fatal(args ...interface{})
Fatalf(format string, args ...interface{})
Fatalln(args ...interface{})
Info(args ...interface{})
Infof(format string, args ...interface{})
Infoln(args ...interface{})
Panic(args ...interface{})
Panicf(format string, args ...interface{})
Panicln(args ...interface{})
Print(args ...interface{})
Printf(format string, args ...interface{})
Println(args ...interface{})
Warn(args ...interface{})
Warnf(format string, args ...interface{})
Warning(args ...interface{})
Warningf(format string, args ...interface{})
Warningln(args ...interface{})
Warnln(args ...interface{})
}
var defaultLogger *logrus.Logger
func init() {
defaultLogger = newLogrusLogger(config.Config())
}
{% if cookiecutter.use_viper_config == "y" %}
// NewLogger returns a configured logrus instance
func NewLogger(cfg config.Provider) *logrus.Logger {
return newLogrusLogger(cfg)
}
{% else %}
// NewLogger returns logrus instance
func NewLogger() *logrus.Logger {
return newLogrusLogger()
}
{% endif %}
{% if cookiecutter.use_viper_config == "y" %}
func newLogrusLogger(cfg config.Provider) *logrus.Logger {
{% else %}
func newLogrusLogger() *logrus.Logger {
{% endif %}
l := logrus.New()
{% if cookiecutter.use_viper_config == "y" %}
if cfg.GetBool("json_logs") {
l.Formatter = new(logrus.JSONFormatter)
}
l.Out = os.Stderr
switch cfg.GetString("loglevel") {
case "debug":
l.Level = logrus.DebugLevel
case "warning":
l.Level = logrus.WarnLevel
case "info":
l.Level = logrus.InfoLevel
default:
l.Level = logrus.DebugLevel
}
{% endif %}
return l
}
// Fields is a map string interface to define fields in the structured log
type Fields map[string]interface{}
// With allow us to define fields in out structured logs
func (f Fields) With(k string, v interface{}) Fields {
f[k] = v
return f
}
// WithFields allow us to define fields in out structured logs
func (f Fields) WithFields(f2 Fields) Fields {
for k, v := range f2 {
f[k] = v
}
return f
}
// WithFields allow us to define fields in out structured logs
func WithFields(fields Fields) Logger {
return defaultLogger.WithFields(logrus.Fields(fields))
}
// Debug package-level convenience method.
func Debug(args ...interface{}) {
defaultLogger.Debug(args...)
}
// Debugf package-level convenience method.
func Debugf(format string, args ...interface{}) {
defaultLogger.Debugf(format, args...)
}
// Debugln package-level convenience method.
func Debugln(args ...interface{}) {
defaultLogger.Debugln(args...)
}
// Error package-level convenience method.
func Error(args ...interface{}) {
defaultLogger.Error(args...)
}
// Errorf package-level convenience method.
func Errorf(format string, args ...interface{}) {
defaultLogger.Errorf(format, args...)
}
// Errorln package-level convenience method.
func Errorln(args ...interface{}) {
defaultLogger.Errorln(args...)
}
// Fatal package-level convenience method.
func Fatal(args ...interface{}) {
defaultLogger.Fatal(args...)
}
// Fatalf package-level convenience method.
func Fatalf(format string, args ...interface{}) {
defaultLogger.Fatalf(format, args...)
}
// Fatalln package-level convenience method.
func Fatalln(args ...interface{}) {
defaultLogger.Fatalln(args...)
}
// Info package-level convenience method.
func Info(args ...interface{}) {
defaultLogger.Info(args...)
}
// Infof package-level convenience method.
func Infof(format string, args ...interface{}) {
defaultLogger.Infof(format, args...)
}
// Infoln package-level convenience method.
func Infoln(args ...interface{}) {
defaultLogger.Infoln(args...)
}
// Panic package-level convenience method.
func Panic(args ...interface{}) {
defaultLogger.Panic(args...)
}
// Panicf package-level convenience method.
func Panicf(format string, args ...interface{}) {
defaultLogger.Panicf(format, args...)
}
// Panicln package-level convenience method.
func Panicln(args ...interface{}) {
defaultLogger.Panicln(args...)
}
// Print package-level convenience method.
func Print(args ...interface{}) {
defaultLogger.Print(args...)
}
// Printf package-level convenience method.
func Printf(format string, args ...interface{}) {
defaultLogger.Printf(format, args...)
}
// Println package-level convenience method.
func Println(args ...interface{}) {
defaultLogger.Println(args...)
}
// Warn package-level convenience method.
func Warn(args ...interface{}) {
defaultLogger.Warn(args...)
}
// Warnf package-level convenience method.
func Warnf(format string, args ...interface{}) {
defaultLogger.Warnf(format, args...)
}
// Warning package-level convenience method.
func Warning(args ...interface{}) {
defaultLogger.Warning(args...)
}
// Warningf package-level convenience method.
func Warningf(format string, args ...interface{}) {
defaultLogger.Warningf(format, args...)
}
// Warningln package-level convenience method.
func Warningln(args ...interface{}) {
defaultLogger.Warningln(args...)
}
// Warnln package-level convenience method.
func Warnln(args ...interface{}) {
defaultLogger.Warnln(args...)
}